﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading;

namespace iNet.Net
{
	/// <summary>
	/// 來自網路回應的資料流。
	/// </summary>
	public class WebResponseStream : iNet.IO.DelayCreationStream
	{
		#region 欄位
		readonly WebRequest _Request;
		WebResponse _Response;
		#endregion
		#region 建構子
		/// <summary>
		/// 初始化新的 WebResponseStream 執行個體。
		/// </summary>
		/// <param name="request">網路請求。</param>
		/// <exception cref="ArgumentNullException">request 為 Null (Visual Basic 為 Nothing)。</exception>
		/// <remarks>網路請求會在第一次存取資料流時執行。</remarks>
		public WebResponseStream(WebRequest request)
		{
			if (request == null)
				throw new ArgumentNullException("request");
			_Request = request;
		}
		#endregion
		#region CreateInternalStream
		/// <summary>
		/// 建立實際的內部資料流，這會在第一次存取資料流時呼叫。
		/// </summary>
		/// <returns>內部資料流。</returns>
		protected override Stream CreateInternalStream()
		{
			_Response = _Request.GetResponse();
			return _Response.GetResponseStream();
		}
		#endregion
	}
}
